package com.estore.service;

import com.estore.model.User;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

/**
 * 用户服务类，处理用户认证和数据管理
 */
public class UserService {
    // 存储用户数据（用户名 -> 用户对象）
    private final Map<String, User> userData = new HashMap<>();
    private static final String USER_DATA_FILE = "users.dat";

    public UserService() {
        loadUserData();
        // 初始化默认用户（首次运行时）
        if (userData.isEmpty()) {
            initDefaultUsers();
            saveUserData();
        }
    }

    // 初始化默认用户（管理员和普通用户）
    private void initDefaultUsers() {
        userData.put("admin", new User("admin", "admin123", User.Role.ADMIN));
        userData.put("user1", new User("user1", "user123", User.Role.USER));
    }

    // 加载用户数据
    private void loadUserData() {
        File file = new File(USER_DATA_FILE);
        if (!file.exists()) return;

        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
            Object obj = ois.readObject();
            if (obj instanceof Map<?, ?>) {
                userData.putAll((Map<String, User>) obj);
                System.out.println("用户数据加载成功，共" + userData.size() + "个用户");
            }
        } catch (Exception e) {
            System.err.println("用户数据加载失败：" + e.getMessage());
        }
    }

    // 保存用户数据
    private void saveUserData() {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(USER_DATA_FILE))) {
            oos.writeObject(userData);
            System.out.println("用户数据保存成功");
        } catch (IOException e) {
            System.err.println("用户数据保存失败：" + e.getMessage());
        }
    }

    // 用户登录验证
    public User login(String username, String password) {
        User user = userData.get(username);
        if (user != null && user.getPassword().equals(password)) {
            return user; // 登录成功
        }
        return null; // 登录失败
    }
}